"""
数据库初始化脚本
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from dotenv import load_dotenv
load_dotenv()

from app import create_app
from app.extensions import db
from app.models import *


def init_database():
    """初始化数据库"""
    app = create_app('development')
    
    with app.app_context():
        print("=" * 60)
        print("初始化数据库")
        print("=" * 60)
        
        # 删除所有表
        print("\n删除现有表...")
        # 使用单个连接来禁用外键检查并删除表（MySQL）
        with db.engine.begin() as conn:
            conn.execute(db.text('SET FOREIGN_KEY_CHECKS = 0;'))
            db.metadata.drop_all(bind=conn)
            conn.execute(db.text('SET FOREIGN_KEY_CHECKS = 1;'))
        print("✓ 已删除所有表")
        
        # 创建所有表
        print("\n创建数据表...")
        db.create_all()
        print("✓ 已创建所有表")
        
        # 创建管理员账户
        print("\n创建管理员账户...")
        admin = User(
            username='admin',
            email='admin@university.edu.cn',
            role='admin',
            first_name='管理员',
            last_name='系统',
            college='系统',
            department='管理'
        )
        admin.set_password('admin123')
        db.session.add(admin)
        db.session.commit()
        print("✓ 管理员账户创建成功")
        print("  用户名: admin")
        print("  密码: admin123")
        
        print("\n" + "=" * 60)
        print("数据库初始化完成！")
        print("=" * 60)


if __name__ == '__main__':
    init_database()

